export default {
  data() {
    return {
      position: [],
      button: []
    }
  },
  computed: {
    pos() {
      return JSON.stringify(this.position)
    },
    btn() {
      return JSON.stringify(this.button)
    }
  },
  watch: {
    show(newVal) {
      if (this.autoClose) return
      const valueObj = this.position[0]
      if (!valueObj) {
        this.init()
        return
      }
      valueObj.show = newVal
      this.$set(this.position, 0, valueObj)
    }
  },
  created() {
    if (this.swipeaction.children !== undefined) {
      this.swipeaction.children.push(this)
    }
  },
  mounted() {
    this.init()
  },
  beforeDestroy() {
    this.swipeaction.children.forEach((item, index) => {
      if (item === this) {
        this.swipeaction.children.splice(index, 1)
      }
    })
  },
  methods: {
    init() {
      setTimeout(() => {
        this.getSize()
        this.getButtonSize()
      }, 50)
    },
    closeSwipe(e) {
      if (!this.autoClose) return
      this.swipeaction.closeOther(this)
    },

    change(e) {
      this.$emit('change', e.open)
      const valueObj = this.position[0]
      if (valueObj.show !== e.open) {
        valueObj.show = e.open
        this.$set(this.position, 0, valueObj)
      }
    },
    onClick(index, item) {
      this.$emit('click', {
        content: item,
        index
      })
    },
    getSize() {
      const views = uni.createSelectorQuery().in(this)
      views
        .selectAll('.selector-query-hock')
        .boundingClientRect(data => {
          if (this.autoClose) {
            data[0].show = false
          } else {
            data[0].show = this.show
          }
          this.position = data
        })
        .exec()
    },
    getButtonSize() {
      const views = uni.createSelectorQuery().in(this)
      views
        .selectAll('.button-hock')
        .boundingClientRect(data => {
          this.button = data
        })
        .exec()
    }
  }
}
